﻿package com.boyaa.shells.tool 
{
	import com.boyaa.debug.Debug;
	
	/**
	 * 隨機數
	 * @author fly
	 */
	public class RandomNum 
	{
		/**
		 * 游戏开始时服务器广播的随机种子，用于客户端自已随机。
		 * */
		static private var _next:int;
		
		/**
		 * 每回合开始服务器广播的随机种子，用于客户端与服务端计算血量。
		 * */
		static private var _HPnext:int;
		
		/**
		 * 每回合开始服务器广播的随机种子，用于客户端与服务端计算技能触发。
		 * */
		static private var _Skillnext:int;
		
		/**
		 * 特殊饰品的暴击
		 * */
		static private var _jewelryCritRandomNum:int;
		
		static public function myrand(min:int, max:int):int
		{
			_next = _next * 1103515245 + 12345;
			var  area:int = max - min + 1;
			return (uint(_next / 65536) % area) + min;
		}
		
		/**
		 * 此种子随机只用于与服务端计算血量
		 * */
		static public function myHPRand(min:int, max:int):int
		{
			_HPnext = int(_HPnext * 1103515245) + 12345;
			var  area:int = max - min + 1;
			return (int(uint(int(_HPnext / 65536)) % area) + min);
		}
		
		/**
		 * 此种子随机只用于与服务端计算技能触发
		 * */
		static public function mySkillRand(min:int, max:int):int
		{
			_Skillnext = int(_Skillnext * 1103515245) + 12345;
			var  area:int = max - min + 1;
			return (int(uint(int(_Skillnext / 65536)) % area) + min);
		}
		
		/**
		 * 服务端计算特殊饰品的暴击触发条件
		 * */
		static public function get jewelryCrit():int
		{
			return _jewelryCritRandomNum;
		}
		/**
		 * 携带的饰品是否暴击
		 */
		static public function set jewelryCrit(num:int):void
		{
			_jewelryCritRandomNum = num;
		}
		
		static public function setNext(next:int):void
		{
			_next = next;
		}
		
		static public function setHPNext(next:int):void
		{
			_HPnext = next;
			_Skillnext = next;
		}
	}
	
}